#include <stdio.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#include <stdbool.h>
#include "msg_queue.h"

static int msgid_ctos;
static int msgid_stoc;

int main()
{
	while(1)
	{
		msgid_ctos = get_ctos_msg();
		msgid_stoc = get_stoc_msg();
		Msg msg_ctos = {};
		Msg msg_stoc = {};
		User user = {};
		msgrcv(msgid_ctos,&msg_ctos,sizeof(Msg),TYPE_CHPWD,0);
		char path[50] = "user/";
		sprintf(path,"%s%d.txt",path,msg_ctos.user.account);
		int fd = open(path,O_RDONLY);
		if(0 > fd)
		{
			puts("用户不存在！");
			return -1;
		}
		if(0 > read(fd,&user,sizeof(User)))
		{
			perror("read");
			strcpy(msg_stoc.result,"服务器升级中");
		}
		if(0 == strcmp(msg_ctos.user.pwd,user.pwd))
		{
			strcpy(user.pwd,msg_ctos.user.id);
			strcpy(msg_stoc.result,"修改密码成功");
		}else{
			strcpy(msg_stoc.result,"密码输入错误");
		}
		close(fd);
		save_data(path,user);
		msg_stoc.type = msg_ctos.pid;
		msgsnd(msgid_stoc,&msg_stoc,sizeof(Msg)-sizeof(msg_stoc.type),0);
	}
}
